import scala.quoted.*
import scala.quoted.staging.*
object Test {
  given Compiler = Compiler.make(getClass.getClassLoader)
  def main(args: Array[String]): Unit = withQuotes {
    println(Expr(true).show)
    println(Expr(false).show)
    println()
    println(Expr(3: Byte).show)
    println(Expr(4: Short).show)
    println(Expr(5: Int).show)
    println(Expr(6: Long).show)
    println(Expr(7.1: Float).show)
    println(Expr(8.1: Double).show)
    println()
    println(Expr('a').show)
    println(Expr("string").show)
    println()
    println(Expr(classOf[String]).show)
    println(Expr(summon[reflect.ClassTag[String]]).show)
    println()
    println(Expr(Array("a")).show)
    println(Expr(Array(true)).show)
    println(Expr(Array(3: Byte)).show)
    println(Expr(Array(4: Short)).show)
    println(Expr(Array(5: Int)).show)
    println(Expr(Array(6: Long)).show)
    println(Expr(Array(7.1: Float)).show)
    println(Expr(Array(8.1: Double)).show)
    println()
    println(Expr(IArray("b")).show)
    println()
    println(Expr(Seq(1, 2, 3)).show)
    println(Expr(Nil).show)
    println(Expr(List(1, 2, 3)).show)
    println(Expr(Set(1, 2, 3)).show)
    println(Expr(Map(1 -> 2, 2 -> 3)).show)
    println()
    println(Expr(None).show)
    println(Expr(Some(4)).show)
    println(Expr(Option(4)).show)
    println()
    println(Expr(Left(1)).show)
    println(Expr(Right(2)).show)
    println(Expr(Right(3): Either[Int, Int]).show)
    println()
    println(Expr(BigInt("422")).show)
    println(Expr(BigDecimal("422.54")).show)
    println()
    println(Expr(StringContext("a", "b")).show)
    println()
    println(Expr(EmptyTuple).show)
    println(Expr(1 *: EmptyTuple).show)
    println(Expr((1, 2)).show)
    println(Expr((1, 2, 3)).show)
    println(Expr((1, 2, 3, 4)).show)
    println(Expr((1, 2, 3, 4, 5)).show)
    println(Expr((1, 2, 3, 4, 5, 6)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)).show)
    println(Expr((1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)).show)
  }
}
